// Package controllers
package controllers

import (
	"encoding/json"
	"fmt"
	"net/http"
	"strconv"

	"git.oschina.net/baayso/gobms/core/utils"
	"git.oschina.net/baayso/gobms/models"
)

//
func GetUserList(w http.ResponseWriter, r *http.Request) {
	users := models.SelectUserList()

	bytes, err := json.Marshal(users)
	utils.CheckError(err)

	jsonStr := string(bytes)

	fmt.Fprintf(w, jsonStr)
}

//
func GetPaginationUserList(w http.ResponseWriter, r *http.Request) {
	r.ParseForm() //解析参数，默认不会解析

	// 当前页码
	pageNum, err := strconv.Atoi(r.Form.Get("pageNum"))

	if err != nil || pageNum < 1 {
		pageNum = 1
	}

	// 页面上的查询条件（根据登录名进行查询）
	queryLoginName := r.Form.Get("queryLoginName")

	// 读取配置文件中的每页显示记录数（pageSize）
	pageSize := utils.Conf.GetIntValue("pageSize")

	if pageSize < 1 || pageSize > 200 {
		pageSize = 10 // 超出指定范围默认为10条
	}

	sqlHelper := utils.NewSqlHelper("t_user").AddWhere2(0 < len(queryLoginName), "login_name LIKE ?", "%"+queryLoginName+"%").AddOrderBy("create_time", "ASC")

	page := models.SelectPaginationUserList(pageNum, pageSize, sqlHelper)

	// 查询出用户对应的角色
	userList := page.RecordList
	for i, v := range userList {
		// 暂时只简单打印一下
		fmt.Println("userList[", i, "] =", v)
	}

	bytes, err := json.Marshal(page)
	utils.CheckError(err)

	jsonStr := string(bytes)

	fmt.Fprintf(w, jsonStr)
}
